{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逻辑回归"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset = pd.read_csv('../datasets/Social_Network_Ads.csv')\n",
    "X = dataset.iloc[ : , [2,3]].values\n",
    "Y = dataset.iloc[ : , 4].values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据集分类（训练集，测试集）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1\n",
      " 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1\n",
      " 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 1 1 0\n",
      " 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0\n",
      " 0 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0\n",
      " 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0\n",
      " 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0\n",
      " 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1\n",
      " 0 0 0 0]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,Y, test_size = 0.25, random_state = 0)\n",
    "print(y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 特征缩放"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0.58164944 -0.88670699]\n",
      " [-0.60673761  1.46173768]\n",
      " [-0.01254409 -0.5677824 ]\n",
      " [-0.60673761  1.89663484]\n",
      " [ 1.37390747 -1.40858358]\n",
      " [ 1.47293972  0.99784738]\n",
      " [ 0.08648817 -0.79972756]\n",
      " [-0.01254409 -0.24885782]\n",
      " [-0.21060859 -0.5677824 ]\n",
      " [-0.21060859 -0.19087153]\n",
      " [-0.30964085 -1.29261101]\n",
      " [-0.30964085 -0.5677824 ]\n",
      " [ 0.38358493  0.09905991]\n",
      " [ 0.8787462  -0.59677555]\n",
      " [ 2.06713324 -1.17663843]\n",
      " [ 1.07681071 -0.13288524]\n",
      " [ 0.68068169  1.78066227]\n",
      " [-0.70576986  0.56295021]\n",
      " [ 0.77971394  0.35999821]\n",
      " [ 0.8787462  -0.53878926]\n",
      " [-1.20093113 -1.58254245]\n",
      " [ 2.1661655   0.93986109]\n",
      " [-0.01254409  1.22979253]\n",
      " [ 0.18552042  1.08482681]\n",
      " [ 0.38358493 -0.48080297]\n",
      " [-0.30964085 -0.30684411]\n",
      " [ 0.97777845 -0.8287207 ]\n",
      " [ 0.97777845  1.8676417 ]\n",
      " [-0.01254409  1.25878567]\n",
      " [-0.90383437  2.27354572]\n",
      " [-1.20093113 -1.58254245]\n",
      " [ 2.1661655  -0.79972756]\n",
      " [-1.39899564 -1.46656987]\n",
      " [ 0.38358493  2.30253886]\n",
      " [ 0.77971394  0.76590222]\n",
      " [-1.00286662 -0.30684411]\n",
      " [ 0.08648817  0.76590222]\n",
      " [-1.00286662  0.56295021]\n",
      " [ 0.28455268  0.07006676]\n",
      " [ 0.68068169 -1.26361786]\n",
      " [-0.50770535 -0.01691267]\n",
      " [-1.79512465  0.35999821]\n",
      " [-0.70576986  0.12805305]\n",
      " [ 0.38358493  0.30201192]\n",
      " [-0.30964085  0.07006676]\n",
      " [-0.50770535  2.30253886]\n",
      " [ 0.18552042  0.04107362]\n",
      " [ 1.27487521  2.21555943]\n",
      " [ 0.77971394  0.27301877]\n",
      " [-0.30964085  0.1570462 ]\n",
      " [-0.01254409 -0.53878926]\n",
      " [-0.21060859  0.1570462 ]\n",
      " [-0.11157634  0.24402563]\n",
      " [-0.01254409 -0.24885782]\n",
      " [ 2.1661655   1.11381995]\n",
      " [-1.79512465  0.35999821]\n",
      " [ 1.86906873  0.12805305]\n",
      " [ 0.38358493 -0.13288524]\n",
      " [-1.20093113  0.30201192]\n",
      " [ 0.77971394  1.37475825]\n",
      " [-0.30964085 -0.24885782]\n",
      " [-1.6960924  -0.04590581]\n",
      " [-1.00286662 -0.74174127]\n",
      " [ 0.28455268  0.50496393]\n",
      " [-0.11157634 -1.06066585]\n",
      " [-1.10189888  0.59194336]\n",
      " [ 0.08648817 -0.79972756]\n",
      " [-1.00286662  1.54871711]\n",
      " [-0.70576986  1.40375139]\n",
      " [-1.29996338  0.50496393]\n",
      " [-0.30964085  0.04107362]\n",
      " [-0.11157634  0.01208048]\n",
      " [-0.30964085 -0.88670699]\n",
      " [ 0.8787462  -1.3505973 ]\n",
      " [-0.30964085  2.24455257]\n",
      " [ 0.97777845  1.98361427]\n",
      " [-1.20093113  0.47597078]\n",
      " [-1.29996338  0.27301877]\n",
      " [ 1.37390747  1.98361427]\n",
      " [ 1.27487521 -1.3505973 ]\n",
      " [-0.30964085 -0.27785096]\n",
      " [-0.50770535  1.25878567]\n",
      " [-0.80480212  1.08482681]\n",
      " [ 0.97777845 -1.06066585]\n",
      " [ 0.28455268  0.30201192]\n",
      " [ 0.97777845  0.76590222]\n",
      " [-0.70576986 -1.49556302]\n",
      " [-0.70576986  0.04107362]\n",
      " [ 0.48261718  1.72267598]\n",
      " [ 2.06713324  0.18603934]\n",
      " [-1.99318916 -0.74174127]\n",
      " [-0.21060859  1.40375139]\n",
      " [ 0.38358493  0.59194336]\n",
      " [ 0.8787462  -1.14764529]\n",
      " [-1.20093113 -0.77073441]\n",
      " [ 0.18552042  0.24402563]\n",
      " [ 0.77971394 -0.30684411]\n",
      " [ 2.06713324 -0.79972756]\n",
      " [ 0.77971394  0.12805305]\n",
      " [-0.30964085  0.6209365 ]\n",
      " [-1.00286662 -0.30684411]\n",
      " [ 0.18552042 -0.3648304 ]\n",
      " [ 2.06713324  2.12857999]\n",
      " [ 1.86906873 -1.26361786]\n",
      " [ 1.37390747 -0.91570013]\n",
      " [ 0.8787462   1.25878567]\n",
      " [ 1.47293972  2.12857999]\n",
      " [-0.30964085 -1.23462472]\n",
      " [ 1.96810099  0.91086794]\n",
      " [ 0.68068169 -0.71274813]\n",
      " [-1.49802789  0.35999821]\n",
      " [ 0.77971394 -1.3505973 ]\n",
      " [ 0.38358493 -0.13288524]\n",
      " [-1.00286662  0.41798449]\n",
      " [-0.01254409 -0.30684411]\n",
      " [-1.20093113  0.41798449]\n",
      " [-0.90383437 -1.20563157]\n",
      " [-0.11157634  0.04107362]\n",
      " [-1.59706014 -0.42281668]\n",
      " [ 0.97777845 -1.00267957]\n",
      " [ 1.07681071 -1.20563157]\n",
      " [-0.01254409 -0.13288524]\n",
      " [-1.10189888 -1.52455616]\n",
      " [ 0.77971394 -1.20563157]\n",
      " [ 0.97777845  2.07059371]\n",
      " [-1.20093113 -1.52455616]\n",
      " [-0.30964085  0.79489537]\n",
      " [ 0.08648817 -0.30684411]\n",
      " [-1.39899564 -1.23462472]\n",
      " [-0.60673761 -1.49556302]\n",
      " [ 0.77971394  0.53395707]\n",
      " [-0.30964085 -0.33583725]\n",
      " [ 1.77003648 -0.27785096]\n",
      " [ 0.8787462  -1.03167271]\n",
      " [ 0.18552042  0.07006676]\n",
      " [-0.60673761  0.8818748 ]\n",
      " [-1.89415691 -1.40858358]\n",
      " [-1.29996338  0.59194336]\n",
      " [-0.30964085  0.53395707]\n",
      " [-1.00286662 -1.089659  ]\n",
      " [ 1.17584296 -1.43757673]\n",
      " [ 0.18552042 -0.30684411]\n",
      " [ 1.17584296 -0.74174127]\n",
      " [-0.30964085  0.07006676]\n",
      " [ 0.18552042  2.09958685]\n",
      " [ 0.77971394 -1.089659  ]\n",
      " [ 0.08648817  0.04107362]\n",
      " [-1.79512465  0.12805305]\n",
      " [-0.90383437  0.1570462 ]\n",
      " [-0.70576986  0.18603934]\n",
      " [ 0.8787462  -1.29261101]\n",
      " [ 0.18552042 -0.24885782]\n",
      " [-0.4086731   1.22979253]\n",
      " [-0.01254409  0.30201192]\n",
      " [ 0.38358493  0.1570462 ]\n",
      " [ 0.8787462  -0.65476184]\n",
      " [ 0.08648817  0.1570462 ]\n",
      " [-1.89415691 -1.29261101]\n",
      " [-0.11157634  0.30201192]\n",
      " [-0.21060859 -0.27785096]\n",
      " [ 0.28455268 -0.50979612]\n",
      " [-0.21060859  1.6067034 ]\n",
      " [ 0.97777845 -1.17663843]\n",
      " [-0.21060859  1.63569655]\n",
      " [ 1.27487521  1.8676417 ]\n",
      " [-1.10189888 -0.3648304 ]\n",
      " [-0.01254409  0.04107362]\n",
      " [ 0.08648817 -0.24885782]\n",
      " [-1.59706014 -1.23462472]\n",
      " [-0.50770535 -0.27785096]\n",
      " [ 0.97777845  0.12805305]\n",
      " [ 1.96810099 -1.3505973 ]\n",
      " [ 1.47293972  0.07006676]\n",
      " [-0.60673761  1.37475825]\n",
      " [ 1.57197197  0.01208048]\n",
      " [-0.80480212  0.30201192]\n",
      " [ 1.96810099  0.73690908]\n",
      " [-1.20093113 -0.50979612]\n",
      " [ 0.68068169  0.27301877]\n",
      " [-1.39899564 -0.42281668]\n",
      " [ 0.18552042  0.1570462 ]\n",
      " [-0.50770535 -1.20563157]\n",
      " [ 0.58164944  2.01260742]\n",
      " [-1.59706014 -1.49556302]\n",
      " [-0.50770535 -0.53878926]\n",
      " [ 0.48261718  1.83864855]\n",
      " [-1.39899564 -1.089659  ]\n",
      " [ 0.77971394 -1.37959044]\n",
      " [-0.30964085 -0.42281668]\n",
      " [ 1.57197197  0.99784738]\n",
      " [ 0.97777845  1.43274454]\n",
      " [-0.30964085 -0.48080297]\n",
      " [-0.11157634  2.15757314]\n",
      " [-1.49802789 -0.1038921 ]\n",
      " [-0.11157634  1.95462113]\n",
      " [-0.70576986 -0.33583725]\n",
      " [-0.50770535 -0.8287207 ]\n",
      " [ 0.68068169 -1.37959044]\n",
      " [-0.80480212 -1.58254245]\n",
      " [-1.89415691 -1.46656987]\n",
      " [ 1.07681071  0.12805305]\n",
      " [ 0.08648817  1.51972397]\n",
      " [-0.30964085  0.09905991]\n",
      " [ 0.08648817  0.04107362]\n",
      " [-1.39899564 -1.3505973 ]\n",
      " [ 0.28455268  0.07006676]\n",
      " [-0.90383437  0.38899135]\n",
      " [ 1.57197197 -1.26361786]\n",
      " [-0.30964085 -0.74174127]\n",
      " [-0.11157634  0.1570462 ]\n",
      " [-0.90383437 -0.65476184]\n",
      " [-0.70576986 -0.04590581]\n",
      " [ 0.38358493 -0.45180983]\n",
      " [-0.80480212  1.89663484]\n",
      " [ 1.37390747  1.28777882]\n",
      " [ 1.17584296 -0.97368642]\n",
      " [ 1.77003648  1.83864855]\n",
      " [-0.90383437 -0.24885782]\n",
      " [-0.80480212  0.56295021]\n",
      " [-1.20093113 -1.5535493 ]\n",
      " [-0.50770535 -1.11865214]\n",
      " [ 0.28455268  0.07006676]\n",
      " [-0.21060859 -1.06066585]\n",
      " [ 1.67100423  1.6067034 ]\n",
      " [ 0.97777845  1.78066227]\n",
      " [ 0.28455268  0.04107362]\n",
      " [-0.80480212 -0.21986468]\n",
      " [-0.11157634  0.07006676]\n",
      " [ 0.28455268 -0.19087153]\n",
      " [ 1.96810099 -0.65476184]\n",
      " [-0.80480212  1.3457651 ]\n",
      " [-1.79512465 -0.59677555]\n",
      " [-0.11157634  0.12805305]\n",
      " [ 0.28455268 -0.30684411]\n",
      " [ 1.07681071  0.56295021]\n",
      " [-1.00286662  0.27301877]\n",
      " [ 1.47293972  0.35999821]\n",
      " [ 0.18552042 -0.3648304 ]\n",
      " [ 2.1661655  -1.03167271]\n",
      " [-0.30964085  1.11381995]\n",
      " [-1.6960924   0.07006676]\n",
      " [-0.01254409  0.04107362]\n",
      " [ 0.08648817  1.05583366]\n",
      " [-0.11157634 -0.3648304 ]\n",
      " [-1.20093113  0.07006676]\n",
      " [-0.30964085 -1.3505973 ]\n",
      " [ 1.57197197  1.11381995]\n",
      " [-0.80480212 -1.52455616]\n",
      " [ 0.08648817  1.8676417 ]\n",
      " [-0.90383437 -0.77073441]\n",
      " [-0.50770535 -0.77073441]\n",
      " [-0.30964085 -0.91570013]\n",
      " [ 0.28455268 -0.71274813]\n",
      " [ 0.28455268  0.07006676]\n",
      " [ 0.08648817  1.8676417 ]\n",
      " [-1.10189888  1.95462113]\n",
      " [-1.6960924  -1.5535493 ]\n",
      " [-1.20093113 -1.089659  ]\n",
      " [-0.70576986 -0.1038921 ]\n",
      " [ 0.08648817  0.09905991]\n",
      " [ 0.28455268  0.27301877]\n",
      " [ 0.8787462  -0.5677824 ]\n",
      " [ 0.28455268 -1.14764529]\n",
      " [-0.11157634  0.67892279]\n",
      " [ 2.1661655  -0.68375498]\n",
      " [-1.29996338 -1.37959044]\n",
      " [-1.00286662 -0.94469328]\n",
      " [-0.01254409 -0.42281668]\n",
      " [-0.21060859 -0.45180983]\n",
      " [-1.79512465 -0.97368642]\n",
      " [ 1.77003648  0.99784738]\n",
      " [ 0.18552042 -0.3648304 ]\n",
      " [ 0.38358493  1.11381995]\n",
      " [-1.79512465 -1.3505973 ]\n",
      " [ 0.18552042 -0.13288524]\n",
      " [ 0.8787462  -1.43757673]\n",
      " [-1.99318916  0.47597078]\n",
      " [-0.30964085  0.27301877]\n",
      " [ 1.86906873 -1.06066585]\n",
      " [-0.4086731   0.07006676]\n",
      " [ 1.07681071 -0.88670699]\n",
      " [-1.10189888 -1.11865214]\n",
      " [-1.89415691  0.01208048]\n",
      " [ 0.08648817  0.27301877]\n",
      " [-1.20093113  0.33100506]\n",
      " [-1.29996338  0.30201192]\n",
      " [-1.00286662  0.44697764]\n",
      " [ 1.67100423 -0.88670699]\n",
      " [ 1.17584296  0.53395707]\n",
      " [ 1.07681071  0.53395707]\n",
      " [ 1.37390747  2.331532  ]\n",
      " [-0.30964085 -0.13288524]\n",
      " [ 0.38358493 -0.45180983]\n",
      " [-0.4086731  -0.77073441]\n",
      " [-0.11157634 -0.50979612]\n",
      " [ 0.97777845 -1.14764529]\n",
      " [-0.90383437 -0.77073441]\n",
      " [-0.21060859 -0.50979612]\n",
      " [-1.10189888 -0.45180983]\n",
      " [-1.20093113  1.40375139]]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "sc = StandardScaler()\n",
    "X_train = sc.fit_transform(X_train)\n",
    "X_test = sc.fit_transform(X_test)\n",
    "print(X_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 逻辑回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "逻辑回归是一个线性分类器，在本问题中，通过线性训练将用户分为两类（购买和不购买）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression()"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "classifier = LogisticRegression()\n",
    "classifier.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = classifier.predict(X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 效果评价"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们预测了测试集。 现在我们将评估逻辑回归模型是否正确的学习和理解。因此这个混淆矩阵将包含我们模型的正确和错误的预测。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成混淆矩阵 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "cm  = confusion_matrix(y_test, y_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "meshgrid, shape, reshape(), ravel(), unique(), listedColormap\n",
    "画图所用到的函数："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*.  Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n",
      "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*.  Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*.  Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n",
      "*c* argument looks like a single numeric RGB or RGBA sequence, which should be avoided as value-mapping will have precedence in case its length matches with *x* & *y*.  Please use the *color* keyword-argument or provide a 2-D array with a single row if you intend to specify the same RGB or RGBA value for all points.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib.colors import ListedColormap\n",
    "X_set,y_set=X_train,y_train\n",
    "#确定范围\n",
    "X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),\n",
    "                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))\n",
    "#画出底色\n",
    "plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),\n",
    "             alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n",
    "plt.xlim(X1.min(),X1.max())\n",
    "plt.ylim(X2.min(),X2.max())\n",
    "#画出散点\n",
    "for i,j in enumerate(np. unique(y_set)):\n",
    "    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],\n",
    "                c = ListedColormap(('red', 'green'))(i), label=j)\n",
    "#画出坐标图的标记等\n",
    "plt. title(' LOGISTIC(Training set)')\n",
    "plt. xlabel(' Age')\n",
    "plt. ylabel(' Estimated Salary')\n",
    "plt. legend()         \n",
    "plt. show()\n",
    "\n",
    "X_set,y_set=X_test,y_test\n",
    "X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),\n",
    "                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))\n",
    "\n",
    "plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),\n",
    "             alpha = 0.75, cmap = ListedColormap(('red', 'green')))\n",
    "plt.xlim(X1.min(),X1.max())\n",
    "plt.ylim(X2.min(),X2.max())\n",
    "for i,j in enumerate(np. unique(y_set)):\n",
    "    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],\n",
    "                c = ListedColormap(('red', 'green'))(i), label=j)\n",
    "\n",
    "plt. title(' LOGISTIC(Test set)')\n",
    "plt. xlabel(' Age')\n",
    "plt. ylabel(' Estimated Salary')\n",
    "plt. legend()\n",
    "plt. show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
